001    /**
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: Jan 9, 2003
005     * Time: 4:22:21 PM
006     */
007    package EVolve.util.equators;
008    
009    public abstract class Set implements Cloneable{
010        protected long [] data;
011        protected int size;
012        protected int emptySlot;
013        protected int entityNumber;
014    
015        public int size() {
016            return size;
017        }
018    
019        public long getElement(int i) {
020            return data[i];
021        }
022    
023        public boolean setFull() {
024            return emptySlot >= size;
025        }
026    
027        public long getEntityId(int i) {
028            return data[i];
029        }
030    
031        public abstract void addElement(long element);
032    
033        public abstract Set intersection(Set set);
034    
035        public abstract Set union(Set set);
036    
037        public abstract boolean exist(long element);
038    
039        public abstract long getHashValue();
040    
041        public abstract Set newSet();
042    
043        public abstract boolean equals(Set set, float percent);
044    
045        public Object clone() {
046            Set o = null;
047            try {
048                o = (Set)super.clone();
049            } catch (CloneNotSupportedException e) {
050                e.printStackTrace();
051                return null;
052            }
053    
054            o.data = new long[data.length];
055            for (int i=0; i<data.length; i++)
056                o.data[i] = data[i];
057            return o;
058        }
059    }